import pandas as pd


def excel_header(df):
    try:
        # 尝试自动检测表头行数（假设表头是连续非空行）
        header_rows = 0
        for i in range(10):  # 检查前10行
            if df.iloc[i].isnull().all():
                break
            header_rows += 1

        # 重新读取表头
        multi_header_data = [df.columns.tolist()]  # 默认第一行是表头
        if header_rows > 1:
            multi_header_data = df.head(header_rows).values.tolist()

        # 读取完整数据（跳过表头行）
        df_data = df.iloc[header_rows:] if header_rows > 0 else df
        df_str = df_data.to_string(index=False)

    except Exception as e:
        multi_header_data, df_str = str(e), None

    return multi_header_data, df_str

file_path='./DataPreprocessing/南方电网公司全员党建责任制清单（2024年版）.xlsx'
# 示例用法
all_sheets = pd.read_excel(file_path, sheet_name=None, na_values=['NA', 'N/A', ''])
for sheet_name, df in all_sheets.items():
    multi_header_data, df_str = excel_header(df)
    print('Sheet Name:', sheet_name)
    print('表头为:\n', multi_header_data)
    print('数据预览:\n', df_str[:5] if df_str else '无数据')  # 打印前100字符预览
